Filter
filter 的配置可以有如下两种方式:
以下说明的方式是建立在把 filter 工程导出 .jar 包后,放入 Tomcat 的 lib 下的前提。
-
放在 Tomcat 目录
conf/web.xml
内。这个方法中,使用<servlet-name>指定需要影响的 servlet,使用<url-pattern>指定需要影响的URL通配规则,如下:<filter> <filter-name>helloFilter</filter-name> <filter-class>com.test.testMyFilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <servlet-name>helloServlet</servlet-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>
- 放在各自 servlet 的
WEB-INF/web.xml
内。在<servlet> 前加入此 filter 的配置。
Eclipse, Servlet
使用 Eclipse 创建的 Servlet 工程名,就是将来会在 url 中 映射的地址,比如,这个工程叫 MyPuppyServlet,那么在浏览器中访问时,其URL就是 http://localhost/MyPuppyServlet
。
若你创建 servlet 时,勾选了产生独立的 web.xml 配置文件,那么在 WEB-INF 下就会有一个 web.xml。以下都是基于这个前提的说明。
在这个 web.xml 内,涉及到关于 servlet 的配置。这里解释一下几个名字的重要关系。
- URL中的访问名,如
http://localhost/MyPuppyServlet
中的 MyPuppyServlet。首先在 URL 里涉及路径上面说过了,就是工程的名字,这个名字,会被 Tomcat 在conf/Catalina/localhost
目录下产生一个对应的 .xml 文件,比如工程名叫 MyPuppyServlet,那么文件名就 MyPuppyServlet.xml。这个文件里 <Context> 属性 docBase 指明了你的工程在文件系统中的实际位置。属性 path 为"/testMyServlet"
好像有些多余,并不能在 eclipse 中有所指定。手工修改成其它值,也并不影响 URL 的访问。 - <servlet-name>,配置中使用的 servlet 名。Tomcat 根据 docBase 中指明的位置,找到 servlet 的根目录,然后进入目录查看
WEB-INF/web.xml
中的内容,这个文件中的标签 <servlet-name> 就明确了在整个系统中,servlet 的名字,必须是唯一的。这里指明的名字,可以被其它地方引用,比如 <filter-mapping> 中想指定对某个 servlet 起作用,就可以在 <filter-mapping> 下用 <servlet-name> 指明。这个 <servlet-name> 名,并不一定要与工程名或路径名中保持一致,它只是一个系统内部引用的名字。比如上面的 URL 是http://localhost/MyPuppyServlet
,这里的 <servlet-name> 仍可以叫作 testABC。 - <servlet-class> 是在工程内为 servlet 从 HttpServlet 继承下来的主类名称,这个名称也与 URL 及 <servlet-name> 完全无关。这里举个例子。我创建一个 servlet 工程,工程名叫 MyPuppyServlet,主类命名为 testCCC,package 名为 com.test.servlet ,则访问 servlet 的 URL 是
http://localhost/MyPuppyServlet
,而在此 servlet 下WEB-INF/web.xml
中的 <servlet-name> 改名为 testABC,<servlet-class> 是 com.test.servlet.testCCC。
Listener
listener 的部署类似于 filter。首先需要导出 listener 的工程为 .jar 包并放到 Tomcat 的 lib 目录下。
然后,分成为所有或部分 servlet 提供服务两个方向。
- 为所有 servlet 提供服务。在 Tomcat 的目录
conf/web.xml
内,放入 <listener> 及其子标签。 - 为部分 servlet 提供服务。在需要使用它的 servlet 的
WEB-INF/web.xml
中,加入 <listener> 及其子标签。
我没有找到如何在 Tomcat 的目录 conf/web.xml
内为部分 servlet 提供服务的配置方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。